package com.igeek.string;

/**
 *  String 的特点：字符串不可以变
 *
 *  StringBuffer 对象  StringBuilder 对象：
 *      可变的字符串
 *
 *  效率的角度分析：
 *      StringBuilder > StringBuffer > String
 *
 *  线程安全的角度：
 *      StringBuffer 线程安全的
 *      StringBuilder 非线程安全
 */
public class Demo05 {

    public static void main(String[] args) {
        //创建StringBuffer对象
        StringBuffer sb = new StringBuffer("hello");

        //创建StringBuilder对象
        StringBuilder sb1 = new StringBuilder("hello");

        /*
            调用方法：
                append() 在字符串的后面追加内容
                charAt(int) 将索引值对应的字符返回
                setCharAt(int,char) 将指定索引位置的字符，进行变更
         */
        sb.append(" world").append(" hello java");

        char c = sb.charAt(15);
        sb.setCharAt(15,'L');

        System.out.println(c);

        System.out.println(sb.toString());

        System.out.println(sb.reverse().toString());

        System.out.println(sb.length());

        append();
    }

    /**
     * 查看字符串拼接的效率
     */
    public static void append(){

        String str = "";
        long startTime =  System.currentTimeMillis();
        System.out.println("开始使用 + 进行拼接" + startTime);

        for(int i = 0;i<10000;i++){
            str += i;
        }

        long endTime = System.currentTimeMillis();
        System.out.println("结束拼接了："+ endTime);
        System.out.println("共花费了"+(endTime - startTime));

        System.out.println("\n\n\n");

        StringBuffer sb = new StringBuffer("");
        startTime = System.currentTimeMillis();
        System.out.println("开始使用 StringBuffer 进行拼接" + startTime);

        for(int i =0;i<10000;i++){
            sb.append(i);
        }

        endTime = System.currentTimeMillis();
        System.out.println("结束拼接了："+ endTime);
        System.out.println("共花费了"+(endTime - startTime));


    }
}
